home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / utilitys / 93 / makersh / graphics.c < prev    next >
C/C++ Source or Header  |  1987-10-12  |  5KB  |  187 lines

  1. /*
  2.    This program may be freely
  3.   distributed , copied,and modified so long
  4. as a fee is not charged. However,
  5. I reserve all rights available to
  6. me under The Copyright Act.
  7. If you find any bugs please feel free to contact me.
  8.   David DeGeorge
  9.   Princeton,New Jersey
  10.   March 1987
  11.  
  12. USENET:  ....princeton!idacrd!dld
  13. COMPUSERVE: 74176,3210
  14. GENIE: DEGEORGE
  15. */
  16.  
  17. #ifdef GEM     /* if not defined compiles into nothing */
  18. #include "makersh.h"
  19. #include <vdibind.h>
  20. #include <aesbind.h>
  21. #include <osbind.h>
  22.  
  23. static *labels[]={
  24.     "strings   ",
  25.     "objects   ",
  26.     "images    ",
  27.     "bitblocks ",
  28.     "iconblks  ",
  29.     "tedinfos  ",
  30.     "trees     ",
  31.     "free strgs",
  32.     "free imgs "
  33. };
  34. #define NITEM 9
  35. typedef struct ditem {
  36.     char *label;
  37.     GRECT rect;
  38.     int  *nptr;
  39. } ITEM;
  40. ITEM items[NITEM];
  41.  
  42. #define XOFFSET  (2*8 +  2)
  43. #define YOFFSET  (3*8 +  1)
  44. #define WIDTH  60*8     
  45. #define SPACE  1*8
  46. #define HITE   1*8
  47.  
  48. static int lenstrs;
  49. static int lenimg;
  50. makeitems()
  51. {      
  52.         int i;
  53.         lenstrs = rheader.rsh_imdata - rheader.rsh_string; 
  54.         lenimg =  rheader.rsh_nbb + 2*(rheader.rsh_nib);
  55.         items[0].nptr  = &lenstrs;
  56.     items[1].nptr  = &rheader.rsh_nobs;
  57.     items[2].nptr  = &lenimg;
  58.         items[3].nptr  = &rheader.rsh_nbb;
  59.         items[4].nptr  = &rheader.rsh_nib;
  60.         items[5].nptr  = &rheader.rsh_nted;
  61.         items[6].nptr  = &rheader.rsh_ntree;
  62.         items[7].nptr  = &rheader.rsh_nstring;
  63.         items[8].nptr  = &rheader.rsh_nimages;
  64.         for ( i = 0 ; i < NITEM ; i++)items[i].label = labels[i];
  65.         for ( i = 0 ; i < NITEM ; i++) {
  66.            items[i].rect.g_x = XOFFSET + 8*(strlen(items[i].label)+1);
  67.            items[i].rect.g_y = YOFFSET + i*(HITE + SPACE) ;
  68.            items[i].rect.g_w = WIDTH;
  69.            items[i].rect.g_h = HITE;
  70.         }
  71. }
  72.         
  73.  display()
  74.  { 
  75.        int i,hin,vin ;
  76.        int pxy[4];
  77.        v_hide_c(handle);
  78.        v_clrwk(handle);
  79.        hin = 0;
  80.        vin = 3;
  81.        vst_alignment(handle,hin,vin,&i,&i);
  82.        pxy[0] = 8;
  83.        pxy[1] = 8;
  84.        pxy[2]= 631;
  85.        pxy[3] = 191;
  86.        vsf_perimeter(handle,1);
  87.        vsf_interior(handle,2);
  88.        vsf_style(handle,IP_1PATT);
  89.        vsf_color(handle,GREEN);
  90.        v_bar(handle,pxy);
  91.        vsf_interior(handle,IP_HOLLOW);
  92.        vsf_color(handle,RED);
  93.        vst_color(handle,BLACK);
  94.        for ( i = 0 ; i < NITEM ; i++ ) {
  95.          char temp[80];int pxy[4];int t1;
  96.          if( *(items[i].nptr) == 0)
  97.                       vst_effects(handle,2); /* shadowed */
  98.               else
  99.                      vst_effects(handle,0);
  100.          
  101.          t1 = items[i].rect.g_y+items[i].rect.g_h;
  102.          vswr_mode(handle,2);
  103.          v_gtext(handle,XOFFSET,t1,items[i].label);     
  104.          vswr_mode(handle,1);             
  105.         vsf_interior(handle,2);
  106.         vsf_style(handle,22);
  107.         vsf_color(handle,GREEN);
  108.          pxy[0] = items[i].rect.g_x;
  109.          pxy[1] = items[i].rect.g_y;
  110.          pxy[2] = items[i].rect.g_x + items[i].rect.g_w;
  111.          pxy[3] = items[i].rect.g_y + items[i].rect.g_h;
  112.          v_bar(handle,pxy);
  113.          sprintf(temp,"%d",*(items[i].nptr));
  114.          vswr_mode(handle,2);         
  115.         v_gtext(handle,pxy[2] + 8,t1,temp);
  116.          vswr_mode(handle,1);         
  117.         
  118.        }
  119. }
  120.  
  121. progress(i,num)
  122. int i ;     /* item number */
  123. int num;
  124. {
  125.       int todo,pxy[4];    
  126.       long  inc ;    
  127.  
  128.               pxy[0] = items[i].rect.g_x;
  129.               pxy[1] = items[i].rect.g_y;
  130.               pxy[3] = pxy[1] + items[i].rect.g_h;
  131.               todo  = *(items[i].nptr);
  132.               inc = ( WIDTH  * (long)num)/(long)todo;  
  133.               pxy[2] = pxy[0] + (int)inc;
  134.               vsf_perimeter(handle,0);
  135.               vsf_color(handle,RED);
  136.               vsf_interior(handle,2);
  137.               vsf_style(handle,3);
  138.               v_bar(handle,pxy);              
  139. }
  140.  
  141. imgprog(num)  /* This is special because non free images are made
  142.                at various places */
  143. int num;
  144. {        
  145.         int  pxy[4];
  146.         int todo,inc;
  147.            
  148.                pxy[0] = items[2].rect.g_x;
  149.                pxy[1] = items[2].rect.g_y;
  150.                pxy[3] = pxy[1] +  items[2].rect.g_h;
  151.                todo  = *(items[2].nptr) ;
  152.                inc =  (WIDTH * num)/todo;        
  153.                pxy[2] = pxy[0] + inc;
  154.                vsf_color(handle,RED);
  155.                vsf_interior(handle,2);
  156.                vsf_style(handle,3);              
  157.                v_bar(handle,pxy);                               
  158. }
  159.  
  160.  
  161.  
  162. open_work()
  163.  {      int i;
  164.         appl_init();
  165.         handle = graf_handle(&i,&i,&i,&i);
  166.         for ( i=0 ; i <10 ; work_in[i++]=1 );
  167.         work_in[10]=2;
  168.         v_opnvwk(work_in,&handle,work_out);
  169. }
  170.  
  171. close_work()
  172. {
  173.     v_clsvwk(handle);
  174.     appl_exit();
  175. }
  176.  
  177.  
  178. flee()
  179. {    
  180.      vst_color(handle,RED);
  181.      vst_effects(handle,1);   /* bold face */
  182.      v_gtext(handle,XOFFSET,184,"PRESS ANY KEY TO EXIT");
  183.      Bconin(2);
  184.      leave();
  185. }
  186. #endif
  187.